package ar.com.sectorwine.controllers;

import java.security.Principal;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import ar.com.sectorwine.dto.EmpresaDTO;
import ar.com.sectorwine.entities.Users;
import ar.com.sectorwine.services.EmpresasService;
import ar.com.sectorwine.services.UsuarioService;

@Controller
@Transactional(propagation = Propagation.REQUIRES_NEW)
public class PublicacionesController {
	@Autowired
	private EmpresasService empresasService;
	@Autowired
	private UsuarioService usuarioService;
	private static final Logger logger = LoggerFactory
			.getLogger(EmpresasController.class);

	@RequestMapping(value = "noticias_publicar", method = RequestMethod.POST)
	public ModelAndView publicar(Locale locale, Model model,
			@RequestParam String id) {
		ModelAndView mav = new ModelAndView("empresas/empresas_perfil");
		mav.addObject("empresa", empresasService.getEmpresa(id));
		return mav;
	}

	@RequestMapping(value = "publicacion_noticia", method = RequestMethod.POST)
	public ModelAndView publicacion_noticia(Locale locale, Model model,
			@RequestParam String id) {
		ModelAndView mav = new ModelAndView(
				"publicaciones/publicacion_noticias");
		mav.addObject("empresa", empresasService.getEmpresa(id));
		return mav;
	}

	@RequestMapping(value = "publicacion_noticia", method = RequestMethod.GET)
	public ModelAndView publicacion_noticia1(Locale locale, Model model,
			Principal principal) {
		Users usuarioActual = usuarioService.getUsuario(principal.getName());

		if (!(usuarioActual.getPerfilUsuario().getEmpresas().isEmpty())) {
			ModelAndView mav = new ModelAndView(
					"publicaciones/publicacion_noticia");
			mav.addObject("mis_empresas", usuarioActual.getPerfilUsuario()
					.getEmpresas());
			return mav;
		} else {
			ModelAndView mav = new ModelAndView(
					"publicaciones/publicacion_noticia");
			mav.addObject("empresa", new EmpresaDTO());
			mav.addObject("mensajeCabecera",
					"Aun no tienes una empresa creada. Crea un perfil para ella!");
			logger.info("El usuario " + usuarioActual.getUsername()
					+ " no tiene empresa creada.");
			return mav;
		}
	}

}
